package com.ray.mapper;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import com.ray.bean.OrderBean;
import com.ray.bean.OrderCustomTagBean;
import com.ray.bean.OrderInfoDetailBean;
import com.ray.bean.OrderInfoTemplateBean;

/**
 * 订单创建Mapper
 * @author Shensg
 * 2018年1月24日
 */
public interface OrderCreateBusinessMapper {
	//获取订单信息列表
	List<Map> getOrderTabList(@Param("map")Map map);
	/*//获取原材料仓信息列表
	List<Map> getSourceFactoryTabList(@Param("map")Map map);	*/
	//获取原料等查询子节点信息
	List<Map> getFactoryTabChildList(@Param("map")Map<String, String> map);
	//存储订单模版
	int saveAsOrderTemplate(@Param("bean")OrderInfoTemplateBean bean);
	//获取基础数据
	List<Map> getDataBasicList(@Param("map")Map map);
	//通过id更新基础数据
	void updateDataBasicById(@Param("map")Map map);
	//获取不可编辑参数 订单编号等
	Map getOrderInfoFixed(@Param("map")Map map);
	//保存订单主表
	int saveOrderInfo(@Param("map")Map map);
	//保存订单明细表
	int saveOrderInfoDetail(List<OrderInfoDetailBean> list);
	//保存订单明细tail表
	int saveOrderInfoTail(List<OrderInfoDetailBean> list);
	//保存订单和模版的关联
	int saveOrderInfoAndTemplate(@Param("order_no")String order_no,@Param("order_template_id") String order_template_id);
	//通过订单号删除
	int deleteOrderInfo(@Param("order_no")String order_no);
	//通过订单号 删除订单模版关系
	void deleteOrderInfoAndTemplate(@Param("order_no")String order_no);
	//通过订单号获取数据
	Map<String,String> getOrderInfoByOrderNo(@Param("order_no")String order_no);
	//通过订单号获取数据
	List<Map<String, String>> getOrderInfoDetailByOrderNo(@Param("order_no")String order_no);
	//通过订单号获取数据
	List<Map<String, Object>> getOrderInfoTailByOrderNo(@Param("order_no")String order_no);
	//检查模版和订单号准确性
	int checkTempAndOrderNo(@Param("map")Map<String, Object> map);
	//检查订单是否已审核
	int getAuditTotalByOrderNo(@Param("map")Map<String, Object> map);
	//更新订单 --审核订单使用
	int updateAudit(Map map);
	//通过id删除模版
	int deleteTemplate(Map<String, Object> map);
	//通过code从materialTable 赋值到 companymaterialTable
	void insertCompanyMTbyCode(@Param("code")String code,@Param("company")String company);
	//通过bean 插入到companymaterialTable
	void insertCompanyMTbyBean(@Param("bean")OrderInfoDetailBean bean);
	//保存自定义标签表
	int saveOrderCustomTag(List<OrderCustomTagBean> list_orderCustomTag);
	//通过id获取自定义标签信息
	Map<String, String> getOrderCustomTagByOrderNo(@Param("order_no")String order_no);
	//获取部门信息表
	List<Map> selectOnlineByDeptId(@Param("map")Map map);
	//通过参数获取生产订单主表数据
	List<Map> getOrderInfoByParam(@Param("map")Map map);
	//删除生产订单主表数据
	int updateOrderInfoPrimary(Map map);
	//通过部门id获取生产车间
	List<Map> selectOnlineForproductWorkNo(@Param("map")Map map);
	//检验申请人和审核人是不是同一个人
	int checkAuditTheSameOne(Map map);
	//获取权限
	Map<String, String> getOrderInfoFixedPermission(Map map);
	//通过订单编号获取投料数大于0的插入到订单明细中
	int saveOrderInfoDetailFromTail(@Param("order_no")String order_no,@Param("order_p_order_total")String order_p_order_total);
	//订单添加操作日志
	void operateLog(Map map);
	//通过业务单号获取订单编号
	List<Map> getOrderNoByBussNo(Map map);
}
